﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LibreriaGestion
{
	public class GeneradorInformesDetallado : IGeneradorInforme
	{
		public static readonly string PlantillaDetalles = "\t\tStock Actual: {0}, Unidades Reservadas {1}, Unidades Disponibles: {2}";

		public GeneradorInformesDetallado(IGestorAlmacen gestor, IVisorInforme visor)
		{
			this.Gestor = gestor;
			this.Visor = visor;
		}

		#region Miembros de IGeneradorInforme

		public IVisorInforme Visor { get; set; }

		public IGestorAlmacen Gestor { get; set; }

		public string generaInforme()
		{
			StringBuilder sb = new StringBuilder();

			foreach (var a in Gestor.getArticulosGestionados())
			{
				sb.AppendLine(a.getDescripcionDetallada());
				sb.AppendLine(string.Format(PlantillaDetalles, Gestor.getStock(a), Gestor.getUnidadesPedidas(a),
					Gestor.getUnidadesDisponibles(a)));
			}

			return sb.ToString();
		}

		public void muestraInforme()
		{
			Visor.muestraInforme(generaInforme());
		}
		#endregion
	}
}
